home *** CD-ROM | disk | FTP | other *** search
- $TREEN=shift;
- die "tree2msgbhtm.pl tree_filename [-options]"
- ."\n -disable_missing \tcheck and disable missing posts/files"
- ."\n\t (will search for post-file.htm or .9 in current dir)"
- ."\n -prefix=some_const_prefix"
- ."\n -autoprefix \tput 1st 2 chars of the link as prefixdirectory"
- ."\n -perpage=posts_per_page (output files are xxxA.htm,xxxB.htm...)"
- ."\n\nreads filename.hdr and filename.tre and produces filename.htm"
- ."\nlinks are in form [const_prefix][xy/]xyzwhateverpost.htm"
- ."\n " if $TREEN eq '';
-
- while ($_=shift) {
- $disable_missing_links++ if /disable_miss/i;
- $autoprefix++ if /autoprefix/i;
- if (s/-prefix=//i) { $prefix_dir=$_; }
- if (s/-perpage=//i) { $perpage=$_; }
- }
-
- $MB = $TREEN; $MB =~ s/\.tre$//i;
- print "<$TREEN ...\n";
-
- $sep = $/;
- undef $/;
- $IN = "$MB.hdr"; open IN || die "$! $IN";
- $HDR = <IN>;
- close IN;
- $/ = $sep;
-
- $HDR =~ s/[ \t]*\n+/\n/g;
- $epilogue = "</body></html>\n";
- #(@tm) = gmtime(); $tm[4]++; $tm[5]+=1900; # $tm[3].$tm[4].$tm[5]
-
- $page=0;
-
- $lvlprev=0;
- $IN = $TREEN; open IN || die "$! $IN";
- while (<IN>) { chop;
- ($lvl,$mail,$name,$mssg,$subj,$date) = split( "\f");
-
- print OUT "</ul>" x ($lvlprev-$lvl) if ($lvlprev>$lvl);
-
- if (!$lvl) { #main msg only
- if ($perpage && $perpage <= $lines || !$page) {
- if ($page) { print OUT $epilogue; close OUT; }
- $OUT = $MB;
- if ($perpage) {
- # be smArtAss and skip 1st chars if too long
- $OUT = substr($MB, length($MB)-7);
- $OUTprev = $OUT.sprintf("%c",64+$page) if $page;
- $OUTnext = $OUT.sprintf("%c",66+$page);
- $OUT .= sprintf("%c",65+$page); #ascii A
- }
- $OUT = ">$OUT.HTM"; print "... $OUT\n"; open(OUT) || die "$! $OUT";
-
- ++$page;
- $lines=0;
- print OUT $HDR;
- print OUT "<center>rebuilt";
- if ($perpage) {
- print OUT "; <a href=\"$OUTprev.HTM\">prev</a>" if $page>1;
- print OUT "; - page $page -";
- print OUT "; <a href=\"$OUTnext.HTM\">next</a>";
- }
- print OUT "</center>\n";
- }
- $threads++;
- }
- $lines++; $totlines++;
- print OUT "<ul>" x ($lvl-$lvlprev) if ($lvl>$lvlprev);
- print OUT "\n<hr size=0>" if !$lvl; #main msg only
- ##print OUT "<TABLE WIDTH=100%><TR><TD>" if !$lvl;
- print OUT "<A HREF=\"mailto:$mail\">" if $mail ne '';
- #print OUT "<font size=\"-1\">$name</font>"; # face=\"arial,helvetica\"
- print OUT "$name";
- print OUT "</A>" if $mail ne '';
- $mssg =~ s/\.9$/\.HTM/; #files named *.9 are NOT recognised as HTML. why?
- $mssg = substr($mssg,0,2).'/'.$mssg if $autoprefix;
- $mssg = $prefix_dir.$mssg;
-
- if ($disable_missing_links) {
- $missing = $dup = 0;
- $mssgroot = $mssg;
- $mssgroot =~ s/\.9$//;
- $mssgroot =~ s/\.HTM$//;
- @st1 = stat( "$mssgroot.HTM" );
- if (!$st1[7]) {
- @st1 = stat( "$mssgroot.9" );
- if (!$st1[7]) {
- # $mssgroot = "9$mssgroot";
- print ": $mssgroot\n";
- # $http = "http://www.insidetheweb.com/messageboard/mbs.cgi?acct=$MB&MyNum=$mssgroot&P=No&TL=$mssgroot";
- # print "<A HREF=\"$http\"> $mssg </A><BR>\n";
- $missing++;
- }
- }
- $dup++ if $msgprev eq $mssgroot;
- $msgprev = $mssgroot;
- }
-
- print OUT ": ";
- print OUT "dup: " if $dup;
- print OUT "OK: " if $disable_missing_links && !$missing;
- print OUT $missing ? "miss(9$mssgroot): " : "<A HREF=\"$mssg\">";
-
- #print OUT "<FONT SIZE=\"-1\">" if $lvl; #smaller font on submesssages
- print OUT $lvl ? "$subj" : "<B>$subj</B>";
- #print OUT "</FONT>" if $lvl;
- print OUT "</A>" if !$missing;
- #print OUT "<FONT SIZE=\"-2\"> $date</FONT>";
- print OUT " $date";
- print OUT "<BR>";
- ##print OUT "</TD></TR></TABLE>" if !$lvl; #main msg only
- print OUT "\n";
-
- $lvlprev = $lvl;
- }
- close IN;
- print OUT $epilogue; close OUT;
-
- print "$threads threads, $totlines posts\n";
-
- #SvD 01'99
-